home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / util1 / yk211src.lha / Yak_2.11_Src / WBStartup / MMB_Shift.c < prev    next >
C/C++ Source or Header  |  1995-10-18  |  1KB  |  55 lines

  1. /*
  2.  * MMB_Shift.c
  3.  *
  4.  * Translates an LMB-MMB event into an Shift LMB-MMB one to allow easy multi selection under 
  5.  * Workbench or BrowserII.
  6.  *
  7.  */
  8.  
  9. #include <clib/alib_protos.h>
  10. #include <libraries/commodities.h>
  11. #include <devices/inputevent.h>
  12. #include <proto/commodities.h>
  13.  
  14. #include "Code.h"
  15. #include "yak.h"
  16. #include "MMB_Shift.h"
  17.  
  18. static CxObj *LMB_MMB_Filter;
  19.  
  20. static IX lmb_mmb_ix = {
  21.    IX_VERSION,    
  22.    IECLASS_RAWMOUSE,
  23.    IECODE_LBUTTON,    
  24.    0x00FF & (~IECODE_UP_PREFIX),
  25.    IEQUALIFIER_MIDBUTTON,
  26.    IEQUALIFIER_MIDBUTTON,
  27.    0
  28. };
  29.  
  30. SAVEDS void 
  31. MMBShiftFunction(register CxMsg *cxm, CxObj *co)
  32. {
  33.     ((struct InputEvent *)CxMsgData(cxm))->ie_Qualifier |= IEQUALIFIER_LSHIFT;
  34. }
  35.  
  36.  
  37. __regargs void
  38. ToggleMMBShift( BOOL toggle)
  39. {
  40.     if (toggle &&
  41.         (LMB_MMB_Filter = CxFilter(NULL)))
  42.     {
  43.         SetFilterIX(LMB_MMB_Filter, &lmb_mmb_ix);
  44.         
  45.         AttachCxObj(broker, LMB_MMB_Filter);
  46.         AttachCxObj(LMB_MMB_Filter, CxCustom(MMBShiftFunction, 0L));
  47.     }
  48.     else
  49.     {
  50.         /* Unactivate MMB Shift */
  51.  
  52.         DeleteCxObjAll(LMB_MMB_Filter); /* LMB_MMB_Filter may be NULL, it doesn't matter */
  53.     }
  54. }
  55.